Barcodes, particularly multi-dimensional matrix codes, have recently become more prevalent in everyday life. Examples of matrix code applications include inventory control, product information, ticketing, security, and identification. With this increased use of matrix codes, it has become necessary to encode more data within the code without significantly increasing the size of the code or decreasing the size of the bits within the code. However, typical binary matrix codes are limited by the amount of data they can hold because each data bit can only have two possibilities (white/light or black/dark).
Previous attempts to solve this problem have incorporated color into the matrix code as a method of increasing the amount of data the code can hold because a color data bit can have many more than two color possibilities. However, with the use of electronic devices such as smartphones and the like to display the matrix code, it is difficult for a barcode reader to accurately perceive the colors that are intended to be displayed by the electronic device because of the wide variation of color presentation across a multitude of devices, as well as changes resulting from the device's environment, such as lighting.
This document describes methods and systems that may solve at least some of the issues described above.